package api

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"gvb-server/Request"
	"gvb-server/global"
	"gvb-server/logic"
	"gvb-server/utils"
)

func (i Images) GetQiNiuToken(c *gin.Context) {

	//GetToken
	q := global.Config.QiNiu
	fmt.Printf("七牛参数：%v%v\n", q.AccessKey, q.SecretKey)
	if q.AccessKey == "" || q.SecretKey == "" {
		utils.Fail("", "请配置AccessKey和SecretKey", c)
		return
	}

	token := utils.GetToken(q)
	r := make(map[string]interface{})
	r["token"] = token
	r["picUrl"] = "https://upload.qiniup.com"
	r["bucket"] = global.Config.QiNiu.Bucket
	utils.Success(r, "", c)
}

// Images 文件列表
// @Tags 资源管理
// @Summary 文件列表
// @Description 文件列表
// @Param data query Request.BannerRequest false "查询参数"
// @Produce application/json
// @Router /api/image [get]
// @Success 200 {object} utils.Response{data=utils.RList[models.Banner]}	// 嵌套返回列表
func (i Images) Images(c *gin.Context) {
	var s Request.BannerRequest
	err := c.ShouldBindQuery(&s)
	if err != nil {
		utils.Fail("", "参数错误", c)
		return
	}

	if s.Page == 0 {
		s.Page = utils.Page
	}
	if s.Size == 0 {
		s.Size = utils.Size
	}

	uRs, err := logic.GetBanners(s)

	if err != nil {
		utils.Fail("", "查询错误", c)
		return
	}

	utils.Success(uRs, "", c)
}

// ImagesDel 资源批量删除
// @Tags 资源管理
// @Summary 资源批量删除
// @Description 资源批量删除
// @Param data body Request.BannerDelRequest false "查询参数"
// @Produce application/json
// @Router /api/image [DELETE]
// @Success 200 {object} utils.Response{}
func (i Images) ImagesDel(c *gin.Context) {
	var s Request.BannerDelRequest
	err := c.ShouldBindJSON(&s)
	if err != nil {
		utils.Fail("", "参数错误", c)
		return
	}

	uRs := logic.DelBanners(s)

	utils.Success("", uRs.Msg, c)
}

// ImagesEdit 资源修改
// @Tags 资源管理
// @Summary 资源修改
// @Description 资源修改
// @Param data body Request.BannerEditRequest false "查询参数"
// @Param id path integer false "查询参数"
// @Produce application/json
// @Router /api/image/:id [put]
// @Success 200 {object} utils.Response{}
func (i Images) ImagesEdit(c *gin.Context) {
	var s Request.BannerEditRequest
	id := c.Param("id")
	if id == "" {
		utils.Fail("", "", c)
		return
	}
	err := c.ShouldBindJSON(&s)

	fmt.Println(s)
	if err != nil {
		msg := utils.GetValidMsg(err, &s)
		utils.Fail("", msg, c)
		return
	}

	uRs := logic.UpdateBanner(s, id)

	utils.Success("", uRs.Msg, c)
}
